home *** CD-ROM | disk | FTP | other *** search
/ Programming in Microsoft Windows with C# / Programacion en Microsoft Windows con C#.iso / Codigo / Impresión / SimplePrintDialog / SimplePrintDialog.cs next >
Encoding:
Text File  |  2002-05-24  |  2.8 KB  |  84 lines

  1. //------------------------------------------------
  2. // SimplePrintDialog.cs ⌐ 2001 by Charles Petzold
  3. //------------------------------------------------
  4. using System;
  5. using System.Drawing;
  6. using System.Drawing.Printing;
  7. using System.Windows.Forms;
  8.  
  9. class PrintDialogHelloWorld: Form
  10. {
  11.      const int iNumberPages = 3;
  12.      int       iPagesToPrint, iPageNumber;
  13.  
  14.      public static void Main()
  15.      {
  16.           Application.Run(new PrintDialogHelloWorld());
  17.      }
  18.      public PrintDialogHelloWorld()
  19.      {
  20.           Text = "Dißlogo para imprimir simple";
  21.  
  22.           Menu = new MainMenu();
  23.           Menu.MenuItems.Add("&Archivo");
  24.           Menu.MenuItems[0].MenuItems.Add("&Imprimir...", 
  25.                                    new EventHandler(MenuFilePrintOnClick));
  26.      }
  27.      void MenuFilePrintOnClick(object obj, EventArgs ea)
  28.      {
  29.                // Crear PrintDocument y PrintDialog.
  30.  
  31.           PrintDocument prndoc = new PrintDocument();
  32.           PrintDialog   prndlg = new PrintDialog();
  33.           prndlg.Document = prndoc;
  34.  
  35.                // Permitir un rango de pßginas.
  36.  
  37.           prndlg.AllowSomePages = true;
  38.           prndlg.PrinterSettings.MinimumPage = 1;
  39.           prndlg.PrinterSettings.MaximumPage = iNumberPages;
  40.           prndlg.PrinterSettings.FromPage = 1;
  41.           prndlg.PrinterSettings.ToPage = iNumberPages;
  42.  
  43.                // Si el cuadro de dißlogo devuelve OK, imprimir.
  44.  
  45.           if(prndlg.ShowDialog() == DialogResult.OK)
  46.           {
  47.                prndoc.DocumentName = Text;
  48.                prndoc.PrintPage += new PrintPageEventHandler(OnPrintPage);
  49.  
  50.                     // Determinar las pßginas a imprimir.
  51.  
  52.                switch (prndlg.PrinterSettings.PrintRange)
  53.                {
  54.                case PrintRange.AllPages:
  55.                     iPagesToPrint = iNumberPages;
  56.                     iPageNumber = 1;
  57.                     break;
  58.  
  59.                case PrintRange.SomePages:
  60.                     iPagesToPrint = 1 + prndlg.PrinterSettings.ToPage -
  61.                                         prndlg.PrinterSettings.FromPage;
  62.                     iPageNumber = prndlg.PrinterSettings.FromPage;
  63.                     break;
  64.                }
  65.                prndoc.Print();
  66.           }
  67.      }
  68.      void OnPrintPage(object obj, PrintPageEventArgs ppea)
  69.      {
  70.           Graphics grfx  = ppea.Graphics;
  71.           Font     font  = new Font("Times New Roman", 360);
  72.           string   str   = iPageNumber.ToString();
  73.           SizeF    sizef = grfx.MeasureString(str, font);
  74.  
  75.           grfx.DrawString(str, font, Brushes.Black, 
  76.                     (grfx.VisibleClipBounds.Width - sizef.Width) / 2,
  77.                     (grfx.VisibleClipBounds.Height - sizef.Height) / 2);
  78.  
  79.           iPageNumber += 1;
  80.           iPagesToPrint -= 1;
  81.           ppea.HasMorePages = iPagesToPrint > 0;
  82.      }
  83. }
  84.